/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cn.edu.nju.software.greencreditsystem.service;

import cn.edu.nju.software.greencreditsystem.DAO.RepaymentRecordDAO;
import cn.edu.nju.software.greencreditsystem.domain.RepaymentRecord;
import cn.edu.nju.software.greencreditsystem.factory.DAOFactory;
import java.awt.image.BufferedImage;
import java.util.List;

/**
 * 作者：韩天
 * 创建时间：2011-8-7
 * 类描述：还款记录的service封装类
 */
public class RepaymentRecordService {
    /**
     * 方法描述：添加一条计划还款记录
     * param：
     * return：
    */
    public void addPlan(int enterpriseId, RepaymentRecord record){
        record.setEnterprise(DAOFactory.getEnterpriseDAOInstance().getById(enterpriseId));
        
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        rrDAO.save(record);
    }
    
    /**
     * 方法描述：清空(一个企业的)还贷记录
     * param：
     * return：
    */
    public void deleteAllById(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        rrDAO.deleteAllById(enterpriseId);
    }
    
    /**
     * 方法描述：通过企业id获得该企业的所有(计划)还款记录
     * param：
     * return：
    */
    public List<RepaymentRecord> getRecordList(int enterpriseId){        
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.getByEnterprise(enterpriseId);
    }
    
    /**
     * 方法描述：取得企业的应还款总额
     * param：
     * return：
    */
    public double getTotalAmount(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.getTotal(enterpriseId, null);
    }
    
    /**
     * 方法描述：取得企业的已还款总额
     * param：
     * return：
    */
    public double getPaidAmount(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.getPaid(enterpriseId, null);
    }
    
    /**
     * 方法描述：取得企业的已还款总额占应还款总额的百分比
     * param：
     * return：
    */
    public double getPaidPercent(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.getPaid(enterpriseId, null);
    }
    
    /**
     * 方法描述：取得企业下一次需要还款的记录
     * param：
     * return：
    */
    public RepaymentRecord getNextUnpaid(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.getNextUnpaid(enterpriseId);
    }
    
    /**
     * 方法描述：取得企业还贷计划图标
     * param：
     * return：
    */
    public BufferedImage get_RepaymentImage(int enterpriseId){
        RepaymentRecordDAO rrDAO = DAOFactory.getRepaymentRecordDAOInstance();
        return rrDAO.drawImage(enterpriseId);
    }
}
